/**
 * 数据库使用示例
 * 展示如何使用数据库连接工具
 */

import { initializeDatabase, VideoService, CategoryService } from './database';
import { testConnection } from './db';

// 示例：测试数据库连接
export async function testDbConnection() {
  console.log('测试数据库连接...');
  const isConnected = await testConnection();
  
  if (isConnected) {
    console.log('✅ 数据库连接成功！');
  } else {
    console.log('❌ 数据库连接失败！');
  }
  
  return isConnected;
}

// 示例：初始化数据库
export async function initDatabase() {
  try {
    await initializeDatabase();
    console.log('✅ 数据库初始化完成！');
  } catch (error) {
    console.error('❌ 数据库初始化失败:', error);
    throw error;
  }
}

// 示例：视频操作
export async function videoExamples() {
  try {
    // 1. 获取所有视频
    console.log('获取所有视频...');
    const allVideos = await VideoService.getAllVideos(10, 0);
    console.log('视频列表:', allVideos);

    // 2. 根据分类获取视频
    console.log('获取电影分类的视频...');
    const movies = await VideoService.getVideosByCategory('电影', 5, 0);
    console.log('电影列表:', movies);

    // 3. 搜索视频
    console.log('搜索视频...');
    const searchResults = await VideoService.searchVideos('城市', 5, 0);
    console.log('搜索结果:', searchResults);

    // 4. 添加新视频
    console.log('添加新视频...');
    const newVideo = await VideoService.addVideo({
      id: 'test-video-' + Date.now(),
      title: '测试视频',
      coverUrl: '/test-cover.jpg',
      durationSeconds: 3600,
      category: '电影',
      description: '这是一个测试视频',
      sourceUrl: 'https://example.com/test.m3u8',
      publishedAt: new Date().toISOString()
    });
    console.log('新视频添加结果:', newVideo);

    // 5. 更新视频
    console.log('更新视频...');
    const updateResult = await VideoService.updateVideo('test-video-' + Date.now(), {
      title: '更新后的测试视频',
      description: '这是更新后的描述'
    });
    console.log('视频更新结果:', updateResult);

  } catch (error) {
    console.error('视频操作示例失败:', error);
  }
}

// 示例：分类操作
export async function categoryExamples() {
  try {
    // 1. 获取所有分类
    console.log('获取所有分类...');
    const categories = await CategoryService.getAllCategories();
    console.log('分类列表:', categories);

    // 2. 添加新分类
    console.log('添加新分类...');
    const newCategory = await CategoryService.addCategory('测试分类', '这是一个测试分类');
    console.log('新分类添加结果:', newCategory);

  } catch (error) {
    console.error('分类操作示例失败:', error);
  }
}

// 示例：完整的使用流程
export async function fullExample() {
  try {
    console.log('🚀 开始数据库使用示例...');
    
    // 1. 测试连接
    const connected = await testDbConnection();
    if (!connected) {
      throw new Error('数据库连接失败，无法继续示例');
    }
    
    // 2. 初始化数据库
    await initDatabase();
    
    // 3. 执行视频操作示例
    await videoExamples();
    
    // 4. 执行分类操作示例
    await categoryExamples();
    
    console.log('✅ 所有示例执行完成！');
    
  } catch (error) {
    console.error('❌ 示例执行失败:', error);
  }
}

// 如果直接运行此文件，执行完整示例
if (require.main === module) {
  fullExample().catch(console.error);
}
